home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <proto/exec.h>
- #include <intuition/intuition.h>
- #include <intuition/gadgetclass.h>
- #include <proto/intuition.h>
- #include <libraries/gadtools.h>
- #include <proto/gadtools.h>
-
- #define ALL_REACTION_CLASSES
- #define ALL_REACTION_MACROS
- #include <reaction/reaction.h>
- #include <gadgets/texteditor.h>
- #include <clib/texteditor_protos.h>
- #include <pragmas/texteditor_pragmas.h>
-
- #include <ctype.h>
- #include <stdlib.h>
- #include <string.h>
- #include "rp.h"
-
- IMPORT struct AminetStruct aminet;
- AGLOBAL struct AGDBStruct agdb;
-
- AGLOBAL struct Gadget* agdb_gadgets[GIDS_11 + 1];
-
- // from rp.c
- IMPORT Object* WinObject[FUNCTIONS + 1];
- IMPORT SBYTE page;
- IMPORT struct Window* MainWindowPtr;
- IMPORT struct SharedStruct shared;
- IMPORT struct Screen* ScreenPtr;
- IMPORT struct Menu* MenuPtr;
- IMPORT ULONG offset,
- signal;
- IMPORT TEXT IOBuffer[LONGESTFIELD + 1],
- aslresult[MEDFIELD + 1],
- string[VLONGFIELD + 1];
- IMPORT struct Library* TextEditorBase;
-
- MODULE void updateagdbgadgets(void);
- MODULE void readagdbgadgets(void);
-
- AGLOBAL void agdb1(void)
- { struct Hook Hook11Struct;
-
- if ((!(aminet.uploader[0])) && readin("S:Report.sender"))
- { /* # Refer: <last>,<first> (<company> ,phone <phone>)<LF>
- # Path: <email><LF>
- # ReferID: <developer><LF> */
-
- offset = 0;
- parse("# Refer: ");
- parse(",");
- parse(" (");
- parse(" ,phone ");
- parse(")\n# Path: ");
- parse("\n# ReferID: ");
- strcpy(aminet.uploader, string);
- }
-
- /* Create the window object. */
- lockscreen();
- gadtools();
- InitHook(&Hook11Struct, Hook11Func, NULL);
-
- if (!(WinObject[11] =
- NewObject
- (
- WINDOW_GetClass(), NULL,
- WA_PubScreen, ScreenPtr,
- WA_ScreenTitle, "Report+",
- WA_Title, "Report+: AGDB Review Editor",
- WA_Activate, TRUE,
- WA_DepthGadget, TRUE,
- WA_DragBar, TRUE,
- WA_CloseGadget, TRUE,
- WA_SizeGadget, TRUE,
- WA_IDCMP, IDCMP_RAWKEY,
- WINDOW_IDCMPHook, &Hook11Struct,
- WINDOW_IDCMPHookBits, IDCMP_RAWKEY,
- WINDOW_MenuStrip, MenuPtr,
- WINDOW_Position, WPOS_FULLSCREEN,
- WINDOW_ParentGroup, agdb_gadgets[GID_11_LY1] =
- NewObject
- ( LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_DeferLayout, TRUE,
- LAYOUT_AddChild, NewObject(LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_DeferLayout, TRUE,
- LAYOUT_AddChild, NewObject(LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_VertAlignment, LALIGN_CENTER,
- LAYOUT_BevelStyle, BVS_NONE,
- LAYOUT_AddChild, NewObject(LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment, LALIGN_RIGHT,
- // LALIGN_RIGHT seems not to work, as you can see :-(
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "_Title:",
- LABEL_Justification, LJ_RIGHT,
- TAG_END
- ),
- TAG_END
- ),
- LAYOUT_AddChild, NewObject(LAYOUT_GetClass(), NULL,
- // layout
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment, LALIGN_RIGHT,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "_Publisher (Year):",
- LABEL_Justification, LJ_RIGHT,
- TAG_END
- ),
- TAG_END
- ),
- LAYOUT_AddChild,
- NewObject
- ( LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment, LALIGN_RIGHT,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "_Game Type:",
- LABEL_Justification, LJ_RIGHT,
- TAG_END
- ),
- TAG_END
- ),
- LAYOUT_AddChild, NewObject(LAYOUT_GetClass(), NULL,
- // layout
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment, LALIGN_RIGHT,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "P_layers:",
- LABEL_Justification, LJ_RIGHT,
- TAG_END
- ),
- TAG_END
- ),
- LAYOUT_AddChild,
- NewObject
- ( LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment, LALIGN_RIGHT,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "_Compatibility:",
- LABEL_Justification, LJ_RIGHT,
- TAG_END
- ),
- TAG_END
- ),
- LAYOUT_AddChild,
- NewObject
- ( LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment, LALIGN_RIGHT,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "_HD Installable?",
- LABEL_Justification, LJ_RIGHT,
- TAG_END
- ),
- TAG_END
- ),
- LAYOUT_AddChild, NewObject(LAYOUT_GetClass(), NULL,
- // layout
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment, LALIGN_RIGHT,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "_Submission:",
- LABEL_Justification, LJ_RIGHT,
- TAG_END
- ),
- CHILD_WeightedWidth, 0,
- TAG_END
- ),
- TAG_END
- ),
- CHILD_WeightedHeight, 0,
- CHILD_WeightedWidth, 0,
- LAYOUT_AddChild,
- NewObject
- ( LAYOUT_GetClass(), NULL,
- LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_VertAlignment, LALIGN_CENTER,
- LAYOUT_HorizAlignment,LALIGN_CENTER,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddChild, agdb_gadgets[GID_11_ST1] =
- NewObject(STRING_GetClass(), NULL,
- // string
- GA_ID, GID_11_ST1,
- STRINGA_TextVal, agdb.title,
- STRINGA_MinVisible, 20,
- TAG_END),
- LAYOUT_AddChild, agdb_gadgets[GID_11_ST2] =
- NewObject(STRING_GetClass(), NULL,
- // string
- GA_ID, GID_11_ST2,
- STRINGA_TextVal, agdb.publisher,
- STRINGA_MinVisible, 20,
- TAG_END),
- LAYOUT_AddChild, agdb_gadgets[GID_11_ST3] =
- NewObject(STRING_GetClass(), NULL,
- // string
- GA_ID, GID_11_ST3,
- STRINGA_TextVal, agdb.gametype,
- STRINGA_MinVisible, 20,
- TAG_END),
- LAYOUT_AddChild, agdb_gadgets[GID_11_ST4] =
- NewObject(STRING_GetClass(), NULL,
- // string
- GA_ID, GID_11_ST4,
- STRINGA_TextVal, agdb.players,
- STRINGA_MinVisible, 20,
- TAG_END),
- LAYOUT_AddChild, agdb_gadgets[GID_11_ST5] =
- NewObject(STRING_GetClass(), NULL,
- // string
- GA_ID, GID_11_ST5,
- STRINGA_TextVal, agdb.hdinstallable,
- STRINGA_MinVisible, 20,
- TAG_END),
- LAYOUT_AddChild, agdb_gadgets[GID_11_ST6] =
- NewObject(STRING_GetClass(), NULL,
- // string
- GA_ID, GID_11_ST6,
- STRINGA_TextVal, agdb.compatibility,
- STRINGA_MinVisible, 20,
- TAG_END),
- LAYOUT_AddChild, agdb_gadgets[GID_11_ST7] =
- NewObject(STRING_GetClass(), NULL,
- // string
- GA_ID, GID_11_ST7,
- STRINGA_TextVal, aminet.uploader,
- STRINGA_MinVisible, 20,
- TAG_END),
- CHILD_WeightedHeight, 0,
- TAG_END
- ),
- CHILD_WeightedHeight, 0,
- TAG_END
- ),
- CHILD_WeightedHeight, 0,
- LAYOUT_AddChild, NewObject(LAYOUT_GetClass(), NULL,
- // layout
- LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
- LAYOUT_SpaceOuter, TRUE,
- LAYOUT_HorizAlignment,LALIGN_CENTER,
- LAYOUT_BevelStyle, BVS_FIELD,
- LAYOUT_AddImage, NewObject
- ( LABEL_GetClass(), NULL,
- // label
- LABEL_Text, "_Review:",
- LABEL_Justification, LJ_CENTER,
- TAG_END
- ),
- TAG_END
- ),
- CHILD_WeightedHeight, 0,
- LAYOUT_AddChild, agdb_gadgets[GID_11_TE1] =
- (struct Gadget *) NewObject
- ( TEXTEDITOR_GetClass(), NULL,
- GA_ID, GID_11_TE1,
- GA_RelVerify, TRUE,
- GA_TEXTEDITOR_ExportWrap, 75,
- TAG_END
- ),
- TAG_END
- ),
- TAG_END
- )))
- { rq("Can't create ReAction gadgets!");
- }
- unlockscreen();
- openwindow();
-
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_TE1], MainWindowPtr, NULL,
- GA_TEXTEDITOR_Contents, agdb.textfield
- ); // long description
- OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_NEW, NOSUB));
- OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_OPEN, NOSUB));
- OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_SAVE, NOSUB));
- OnMenu(MainWindowPtr, FULLMENUNUM(MN_PROJECT, IN_SAVEAS, NOSUB));
-
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST1]);
- loop();
- readagdbgadgets();
- closewindow();
- }
-
- AGLOBAL void saveagdb(ABOOL saveas)
- { /* Title <title>
- Publisher <publisher>
- Game Type <game type>
- Players <players>
- HD Installable <hd installable>
- Compatibility <compatibility>
- Submission <uploader>
-
- Review
- <review> */
-
- readagdbgadgets();
-
- strcpy(IOBuffer, "Title: ");
- strcat(IOBuffer, agdb.title);
- strcat(IOBuffer, "\nPublisher: ");
- strcat(IOBuffer, agdb.publisher);
- strcat(IOBuffer, "\nGame Type: ");
- strcat(IOBuffer, agdb.gametype);
- strcat(IOBuffer, "\nPlayers: ");
- strcat(IOBuffer, agdb.players);
- strcat(IOBuffer, "\nHD Installable: ");
- strcat(IOBuffer, agdb.hdinstallable);
- strcat(IOBuffer, "\nCompatibility: ");
- strcat(IOBuffer, agdb.compatibility);
- strcat(IOBuffer, "\nSubmission: ");
- strcat(IOBuffer, aminet.uploader);
- strcat(IOBuffer, "\n\nReview:\n");
- strcat(IOBuffer, agdb.textfield);
-
- if (!agdb.output[0] || saveas) // if we need a filename
- { if (saveasl("Save AGDB Review", "~(#?.info)"))
- { strcpy(agdb.output, aslresult);
- writeout(agdb.output);
- } }
- else
- { writeout(agdb.output);
- } }
-
- AGLOBAL void agdb_loop(ULONG gid)
- { ; // :-)
- }
-
- AGLOBAL ULONG Hook11Func(struct Hook *h, VOID *o, VOID *msg)
- { /* "When the hook is called, the data argument points to the
- window object and message argument to the IntuiMessage." */
-
- UWORD code, qual;
-
- geta4(); // wait till here before doing anything
-
- code = ((struct IntuiMessage *) msg)->Code;
- qual = ((struct IntuiMessage *) msg)->Qualifier;
-
- switch(code)
- {
- case SCAN_HELP:
- helpabout();
- break;
- case SCAN_ESCAPE:
- if ((qual & IEQUALIFIER_LSHIFT) || (qual & IEQUALIFIER_RSHIFT))
- { cleanexit(EXIT_SUCCESS);
- } else page = 0;
- break;
- case SCAN_T:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST1]);
- break;
- case SCAN_P:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST2]);
- break;
- case SCAN_G:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST3]);
- break;
- case SCAN_L:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST4]);
- break;
- case SCAN_C:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST5]);
- break;
- case SCAN_H:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST6]);
- break;
- case SCAN_S:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_ST7]);
- break;
- case SCAN_R:
- ActivateLayoutGadget(agdb_gadgets[GID_11_LY1], MainWindowPtr, NULL, (Object) agdb_gadgets[GID_11_TE1]);
- break;
- default:
- break;
- }
-
- return(1);
- }
-
- AGLOBAL void newagdb(ABOOL display)
- { strcpy(agdb.title, "");
- strcpy(agdb.publisher, "");
- strcpy(agdb.gametype, "");
- strcpy(agdb.players, "");
- strcpy(agdb.hdinstallable, "");
- strcpy(agdb.compatibility, "");
- strcpy(aminet.uploader, "");
- strcpy(agdb.output, "");
- strcpy(agdb.textfield, "");
-
- if (display)
- updateagdbgadgets();
- }
-
- AGLOBAL void openagdb(void)
- { if (asl("~(#?.info)"))
- { strcpy(agdb.output, aslresult);
- loadagdb();
- updateagdbgadgets();
- } }
-
- AGLOBAL void loadagdb(void)
- { if (readin(agdb.output))
- { offset = 0;
-
- parse("Title: ");
- parse("\nPublisher: ");
- strcpy(agdb.title, string);
- parse("\nGame Type: ");
- strcpy(agdb.publisher, string);
- parse("\nPlayers: ");
- strcpy(agdb.gametype, string);
- parse("\nHD Installable: ");
- strcpy(agdb.players, string);
- parse("\nCompatibility: ");
- strcpy(agdb.hdinstallable, string);
- parse("\nSubmission: ");
- strcpy(agdb.compatibility, string);
- parse("\n\nReview:\n");
- strcpy(aminet.uploader, string);
- parsetoend();
- strcpy(agdb.textfield, string);
-
- updateagdbgadgets();
- } }
-
- MODULE void updateagdbgadgets(void)
- { SetGadgetAttrs
- ( agdb_gadgets[GID_11_ST1], MainWindowPtr, NULL,
- STRINGA_TextVal, agdb.title,
- TAG_DONE
- );
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_ST2], MainWindowPtr, NULL,
- STRINGA_TextVal, agdb.publisher,
- TAG_DONE
- );
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_ST3], MainWindowPtr, NULL,
- STRINGA_TextVal, agdb.gametype,
- TAG_DONE
- );
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_ST4], MainWindowPtr, NULL,
- STRINGA_TextVal, agdb.players,
- TAG_DONE
- );
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_ST5], MainWindowPtr, NULL,
- STRINGA_TextVal, agdb.hdinstallable,
- TAG_DONE
- );
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_ST6], MainWindowPtr, NULL,
- STRINGA_TextVal, agdb.compatibility,
- TAG_DONE
- );
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_ST7], MainWindowPtr, NULL,
- STRINGA_TextVal, aminet.uploader,
- TAG_DONE
- );
- SetGadgetAttrs
- ( agdb_gadgets[GID_11_TE1], MainWindowPtr, NULL,
- GA_TEXTEDITOR_Contents, aminet.textfield,
- TAG_DONE
- );
- }
-
- MODULE void readagdbgadgets(void)
- { STRPTR textBuffer;
-
- if (!(GetAttr
- ( STRINGA_TextVal, agdb_gadgets[GID_11_ST1], (ULONG *) agdb.title
- )))
- { rq("Unsupported inquiry!"); // should never happen
- }
- if (!(GetAttr
- ( STRINGA_TextVal, agdb_gadgets[GID_11_ST2], (ULONG *) agdb.publisher
- )))
- { rq("Unsupported inquiry!"); // should never happen
- }
- if (!(GetAttr
- ( STRINGA_TextVal, agdb_gadgets[GID_11_ST3], (ULONG *) agdb.gametype
- )))
- { rq("Unsupported inquiry!"); // should never happen
- }
- if (!(GetAttr
- ( STRINGA_TextVal, agdb_gadgets[GID_11_ST4], (ULONG *) agdb.players
- )))
- { rq("Unsupported inquiry!"); // should never happen
- }
- if (!(GetAttr
- ( STRINGA_TextVal, agdb_gadgets[GID_11_ST5], (ULONG *) agdb.hdinstallable
- )))
- { rq("Unsupported inquiry!"); // should never happen
- }
- if (!(GetAttr
- ( STRINGA_TextVal, agdb_gadgets[GID_11_ST6], (ULONG *) agdb.compatibility
- )))
- { rq("Unsupported inquiry!"); // should never happen
- }
- if (!(GetAttr
- ( STRINGA_TextVal, agdb_gadgets[GID_11_ST7], (ULONG *) aminet.uploader
- )))
- { rq("Unsupported inquiry!"); // should never happen
- }
-
- textBuffer = (STRPTR) DoGadgetMethod(agdb_gadgets[GID_11_TE1], MainWindowPtr, NULL, GM_TEXTEDITOR_ExportText, NULL);
- strcpy(agdb.textfield, textBuffer); // long description
- FreeVec((APTR) textBuffer);
- // textBuffer = NULL;
- }
-